#ifndef __QYQ_MODULE_SMG_H_
#define __QYQ_MODULE_SMG_H_
#include "chip_include.h"
#ifdef __QYQ_MODULE_SMG_C_
#define QYQ_MODULE_SMG_EXT extern
#else
#define QYQ_MODULE_SMG_EXT
#endif

typedef struct
{
    void (*qyq_module_smg_config_writedat)(uint8_t dat);   // 写数据
    void (*qyq_module_smg_config_writeaddr)(uint8_t addr); // 写地址，从0编号开始写
    void (*qyq_module_smg_config_delay)(void);             // 如果采用系统延迟，不需要适配延迟函数，否则需要延迟函数
    uint8_t qyq_module_smg_number;                         // 数码管数量
    uint8_t qyq_module_smg_off_value;                      // 数码管全部关闭值
    uint8_t qyq_module_smg_data_count;                     // 数码管计数器
    uint8_t *qyq_module_smg_data_value;                    // 数码管显示buf
} qyq_module_smg_config_t;

// 功能
typedef struct qyq_module_smg_type
{
    qyq_module_smg_config_t *qyq_module_smg_config;

    int8_t (*qyq_module_smg_write)(struct qyq_module_smg_type *this, uint8_t smg_id, uint8_t value);
    int8_t (*qyq_module_smg_scan)(struct qyq_module_smg_type *this);
} qyq_module_smg_type_t;

QYQ_MODULE_SMG_EXT int8_t qyq_module_smg_create(qyq_module_smg_type_t *this, qyq_module_smg_config_t *qyq_module_smg_config);
#endif
